﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace JshRCSWebApi.Infrastructure.Domain.VO.SysVehicle.VehicleConfig
{

    public class robot_config_downloadmap_VO
    {
        /// <summary>
        /// 
        /// </summary>
        public Header header { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public List<NormalPosList> normalPosList { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public List<AdvancedPointList> advancedPointList { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public List<AdvancedCurveList> advancedCurveList { get; set; }
    } 
    public class MinPos
    {
        /// <summary>
        /// 
        /// </summary>
        public double x { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public double y { get; set; }
    }

    public class MaxPos
    {
        /// <summary>
        /// 
        /// </summary>
        public double x { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public double y { get; set; }
    }

    public class Header
    {
        /// <summary>
        /// 
        /// </summary>
        public string mapType { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string mapName { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public MinPos minPos { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public MaxPos maxPos { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public double resolution { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string version { get; set; }
    }

    public class NormalPosList
    {
        /// <summary>
        /// 
        /// </summary>
        public double x { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public double y { get; set; }
    }  

    public class AdvancedPointList
    {
        /// <summary>
        /// 
        /// </summary>
        public string className { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string instanceName { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public Pos pos { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public List<Property>? property { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public bool ignoreDir { get; set; }
    } 

    public class StartPos
    {
        /// <summary>
        /// 
        /// </summary>
        public string instanceName { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public Pos pos { get; set; }
    }

    public class Pos
    {
        /// <summary>
        /// 
        /// </summary>
        public double x { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public double y { get; set; }
    }

    public class EndPos
    {
        /// <summary>
        /// 
        /// </summary>
        public string instanceName { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public Pos pos { get; set; }
    }

    public class ControlPos1
    {
        /// <summary>
        /// 
        /// </summary>
        public double x { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public double y { get; set; }
    }

    public class ControlPos2
    {
        /// <summary>
        /// 
        /// </summary>
        public double x { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public double y { get; set; }
    }

    public class Property
    {
        /// <summary>
        /// 
        /// </summary>
        public string key { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string type { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string value { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public int int32Value { get; set; }
    }

    public class AdvancedCurveList
    {
        /// <summary>
        /// 
        /// </summary>
        public string className { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string instanceName { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public StartPos startPos { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public EndPos endPos { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public ControlPos1 controlPos1 { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public ControlPos2 controlPos2 { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public List<Property> property { get; set; }
    }
}
